package com.wf.LeetCode;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author mpk
 * @since 2024/6/10 21:11:17
 */

/*
2200. 找出数组中的所有 K 近邻下标
        简单
        相关标签
        相关企业
        提示
        给你一个下标从 0 开始的整数数组 nums 和两个整数 key 和 k 。K 近邻下标 是 nums 中的一个下标 i ，并满足至少存在一个下标 j 使得 |i - j| <= k 且 nums[j] == key 。

        以列表形式返回按 递增顺序 排序的所有 K 近邻下标。
*/


public class FindKDistantIndices {


    public static void main(String[] args) {

        int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int key = 2;
        int k = 5;
        List<Integer> kDistantIndices = findKDistantIndices(nums, key, k);


    }

    public static List<Integer> findKDistantIndices(int[] nums, int key, int k) {


        List<Integer> integers = new ArrayList<>();
        List<Integer> integers1 = new ArrayList<>();

        for (int i = 0; i < nums.length; i++) {

            if (nums[i] == key) {
                integers.add(i);
                integers1.add(i);
            }

        }


        for (int i = 0; i < nums.length; i++) {

            for (Integer integer : integers) {

                if (Math.abs(i - integer) <= k) {
                    integers1.add(i);
                    break;
                }
            }


        }

        integers1 = integers1.stream().distinct().sorted().collect(Collectors.toList());

        System.out.println(integers1);

        return integers1;

    }
}
